package com.example.demo.common;

import org.springframework.util.DigestUtils;
import org.springframework.util.StringUtils;

import java.nio.charset.StandardCharsets;
import java.util.UUID;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: lishuo
 * Date: 2023-09-19
 * Time: 10:46
 */
public class PasswordUtils {
    // 1.加盐加密
    public static String encrypt(String password) {
        // 1.得到盐值(32位)
        String salt = UUID.randomUUID().toString().replace("-","");
        // 2.使用 MD5 加盐加密(32位)
        String finalPassword = DigestUtils.md5DigestAsHex((salt+password).getBytes(StandardCharsets.UTF_8));
        // 3.将 盐值+$+最终的密码 返回(65位)
        return salt+"$"+finalPassword;
    }


    // 2.加盐验证
    public static Boolean decrypt(String password,String saltAndFinalPassword) {
        // 1.参数校验
//        if (!StringUtils.hasLength(password) || !StringUtils.hasLength(saltAndFinalPassword)
//        || saltAndFinalPassword.length() != 65) {
//            return false;
//        }
        // 2.获取到盐值 和 finalPassword
        String[] dbPasswordArr = saltAndFinalPassword.split("\\$");
        String salt = dbPasswordArr[0];
        String dbFinalPassword = dbPasswordArr[1];
        // 3.将 密码和盐值 进行 MD5 加密
        String finalPassword = DigestUtils.md5DigestAsHex((salt+password).getBytes(StandardCharsets.UTF_8));
        // 4.将加密后的密码 和 finalPassword 进行比对
        if (finalPassword.equals(dbFinalPassword)) {
            return true;
        }
        return false;
    }
}
